#include "ClientCommandInterpreter.h"
#include "const.h"

ClientCommandInterpreter::ClientCommandInterpreter(){
	// Comandos de flujo de server a cliente
	comandos[ERASED] = new ErasedFileCommand();
	comandos[NEW] = new NewFileCommand();

	// La modificacion es indistinta respecto al flujo de informacion
	comandos[UPDATEFILE] = new UpdateFileCommand();

	// Para las notificaciones
	comandos[UPDATED] = new UpdatedFileCommand();

	// Comando de flujo de cliente a server
	comandos[UPLOADFILE] = new UploadFileCommand();
	comandos[ERASEFILE] = new EraseFileCommand();
}

ClientCommandInterpreter::~ClientCommandInterpreter(){
	delete(comandos[ERASED]);
	delete(comandos[NEW]);
	delete(comandos[UPDATEFILE]);
	delete(comandos[UPDATED]);
	delete(comandos[UPLOADFILE]);
	delete(comandos[ERASEFILE]);
}

ClientCommand* ClientCommandInterpreter::operator[](std::string &s){
	return comandos.at(s);
}
